package com.myk.game.heroscuffle.ui;

import android.content.Context;
import android.graphics.Color;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
import android.util.AttributeSet;
import android.widget.FrameLayout;
import android.widget.ScrollView;
import android.widget.TextView;

import com.myk.game.heroscuffle.R;

/**
 * 游戏消息面板
 */
public class GameMsgLayout extends FrameLayout {

    private String mGameMsg;
    private ScrollView scrollView;
    private TextView textView;

    //初始化
    private void init(Context context) {
        inflate(context, R.layout.layout_game_msg, this);
        mGameMsg = "";
        scrollView = findViewById(R.id.sv_gml_container);
        textView = findViewById(R.id.tv_gml_msg);
    }

    /**
     * 在消息面板上追加一条信息
     */
    public void addMsg(String gameMsg) {
        mGameMsg += gameMsg;
        textView.setText(mGameMsg);
        textView.post(() -> scrollView.fullScroll(ScrollView.FOCUS_DOWN));
    }

    /**
     * 在消息面板上添加一条操作提示文本
     * （该文本的颜色和信息文本颜色不同，
     * 且始终只会在面板最后一行存在一条文本，
     * 当消息面板更新时提示文本就会消失。）
     */
    public void setTip(String tip) {
        String lTip = "\n#" + tip;
        String msgWithTip = mGameMsg + lTip;
        SpannableString spannableString = new SpannableString(msgWithTip);
        spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#ffff3366")),
                mGameMsg.length(), mGameMsg.length() + lTip.length(),
                Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        textView.setText(spannableString);
        textView.post(() -> scrollView.fullScroll(ScrollView.FOCUS_DOWN));
    }

    /**
     * 清空消息面板上所有文字
     */
    public void clearMsg() {
        mGameMsg = "";
        textView.setText(mGameMsg);
    }

    /**
     * 获取消息面板上的所有文字
     */
    public String getGameMsg() {
        return mGameMsg;
    }

    public GameMsgLayout(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public GameMsgLayout(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context);
    }
}
